/**
 * 节流函数
 * desc: 多次触发，在interval时间段内只执行一次
 * use: 接口请求的点击事件
 * @param {*} fn
 * @param {*} interval
 * @returns 
 */
export function throttle (fn, interval = 300) {
  let canRun = true
  return function () {
    if (!canRun) return
    canRun = false
    setTimeout(() => {
      fn.apply(this, arguments)
      canRun = true
    }, interval)
  }
}
/**
 * 防抖函数
 * desc: 多次触发，执行最后一次
 * use: input输入搜索、scroll触发事件
 * @param {*} func 
 * @param {*} ms 
 * @returns 
 */
export function debounce (func, ms = 300) {
  let timer
  return function (...args) {
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      func.apply(this, args)
    }, ms)
  }
}
